# 可选：命令行启动入口（非GUI模式）
# run.py
# run.py
import sys
import argparse
from pathlib import Path

# 将项目根目录加入 Python 路径（确保能导入 view/utils 等模块）
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))

from utils.utils import logger


def run_cli_mode(args):
    """命令行模式逻辑（示例）"""
    logger.info("启动命令行模式（CLI）")

    # TODO: 在这里实现你的非 GUI 采集逻辑
    # 例如：读取配置、执行爬虫、输出结果到控制台等

    print("=== 电商数据采集工具 - 命令行模式 ===")
    print(f"目标店铺: {args.shop or '未指定'}")
    print(f"采集页数: {args.pages or '全部'}")
    print(f"输出目录: {args.output or './output'}")

    # 示例：调用你的核心采集函数（需你自己实现）
    # from core.collector import run_collector
    # run_collector(shop=args.shop, pages=args.pages, output_dir=args.output)

    logger.info("命令行模式执行完成")


def run_gui_mode():
    """GUI 模式：启动登录窗口"""
    logger.info("启动图形界面模式（GUI）")
    try:
        from view.login_window import LoginWindow
        import customtkinter as ctk
        ctk.set_appearance_mode("System")
        ctk.set_default_color_theme("blue")
        app = LoginWindow()
        app.mainloop()
    except Exception as e:
        logger.critical(f"GUI 启动失败: {e}", exc_info=True)
        sys.exit(1)


def main():
    parser = argparse.ArgumentParser(
        description="电商数据采集工具",
        prog="DataCollector"
    )
    parser.add_argument(
        "--cli",
        action="store_true",
        help="以命令行模式运行（不启动 GUI）"
    )
    parser.add_argument(
        "--shop",
        type=str,
        help="指定要采集的店铺名称（仅 CLI 模式有效）"
    )
    parser.add_argument(
        "--pages",
        type=int,
        help="采集页数（仅 CLI 模式有效）"
    )
    parser.add_argument(
        "--output",
        type=str,
        help="输出目录路径（仅 CLI 模式有效）"
    )

    args = parser.parse_args()

    if args.cli:
        run_cli_mode(args)
    else:
        run_gui_mode()


if __name__ == "__main__":
    main()